/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gcs.Negocio;

import java.util.ArrayList;
import java.util.TreeMap;

/**
 *
 * @author Emanuel
 */
public class Cliente {

    private String nome;
    private int numBI;
    private int numContribuinte;
    private String morada;
    private boolean activo;
    private String codCliente;
    public static int contador = 0;

    private ArrayList<Historico> hist;
    private TreeMap<String,Contracto> contractos;

    public Cliente(boolean x){
        nome="";
        numBI=0;
        numContribuinte=0;
        morada="";
        activo=false;
        codCliente = "Cl" + contador;
        hist = new ArrayList<Historico>();
        contractos = new TreeMap<String,Contracto>();
    }

    public Cliente(){
        nome="";
        numBI=0;
        numContribuinte=0;
        morada="";
        activo=false;
        codCliente = "Cl" + contador;
        hist = new ArrayList<Historico>();
        contractos = new TreeMap<String,Contracto>();
        incContador();
    }

    public Cliente(Cliente c){
        nome=c.getNome();
        numBI=c.getNumBI();
        numContribuinte=c.getNumContribuinte();
        morada=c.getMorada();
        activo=c.isActivo();
        codCliente=c.getCodCliente();
        hist = new ArrayList<Historico>(c.getHist());
        contractos = new TreeMap<String, Contracto>(c.getContractos());
        incContador();
    }

    public Cliente(String nome,int numBI, int numContribuinte, String morada,boolean activo,ArrayList<Historico> hist,TreeMap<String,Contracto> contractos){
        this.nome=nome;
        this.numBI=numBI;
        this.numContribuinte=numContribuinte;
        this.morada=morada;
        this.activo=activo;
        codCliente="Cl"+contador;
        this.hist = new ArrayList<Historico>(hist);
        this.contractos=contractos;
        incContador();
    }

    public Cliente(String nome,int numBI, int numContribuinte, String morada,boolean activo,ArrayList<Historico> hist,TreeMap<String,Contracto> contractos,String codCliente){
        this.nome=nome;
        this.numBI=numBI;
        this.numContribuinte=numContribuinte;
        this.morada=morada;
        this.activo=activo;
        codCliente="Cl"+contador;
        this.hist = new ArrayList<Historico>(hist);
        this.contractos=contractos;
        this.codCliente=codCliente;
        incContador();
    }
    @Override
    public String toString(){
        return this.nome;
    }

    @Override
    public Cliente clone(){ return new Cliente(this); }

    public String getCodCliente(){
        return codCliente;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getNumBI() {
        return numBI;
    }

    public void setNumBI(int numBI) {
        this.numBI = numBI;
    }

    public int getNumContribuinte() {
        return numContribuinte;
    }

    public void setNumContribuinte(int numContribuinte) {
        this.numContribuinte = numContribuinte;
    }

    public String getMorada() {
        return morada;
    }

    public void setMorada(String morada) {
        this.morada = morada;
    }

    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public ArrayList<Historico> getHist() {
        return hist;
    }

    public void setHist(ArrayList<Historico> hist) {
        this.hist = hist;
    }

    public void setCodCliente(String codCliente){
        this.codCliente=codCliente;
    }

    public TreeMap<String, Contracto> getContractos() {
        return contractos;
    }

    public void setContractos(TreeMap<String, Contracto> contractos) {
        this.contractos = contractos;
    }

    public void incContador(){ contador++; }

    public static int getContador() {
       return contador;
   }

   public static void setContador(int aContador) {
       contador = aContador;
   }
}
